package net.sf.amateras.air.as.syntax;

public interface ISyntaxClass {
    public static final int TYPE_CLASS = 1;
    public static final int TYPE_FUNCTION = 2;
    public static final int TYPE_PROPERTY = 3;
    public static final int TYPE_INTERFACE = 4;
    public static final int TYPE_CONSTANT = 5;
    public static final int TYPE_RESERVED_WORD = 6;

    public int getType();

    /**
     * ex)myFunction
     * @return
     */
    public String getName();

    /**
     * ex)myFunction(arg1:int, arg2:String):int 
     * @return
     */
    public String getDisplayString();

    /**
     * description of myFunction();
     * @return
     */
    public String getAdditionalInfo();

    /**
     * ex)arg1:int, arg2:String
     * @return
     */
    public String getInformationDisplayString();

    /**
     * ex)myFunction(arg1, arg2)
     * @return
     */
    public String getReplacementString();

    /**
     * my| <- offset = 100
     * and replace String = my[F]unction()
     * then.. 100 - "my".length -> 98
     * @return 
     */
    public int getReplacementOffset();

    /**
     * @return getReplacementString().length()
     */
    public int getReplacementLength();

    /**
     * @return offset of caret position in textEditor.
     */
    public int getCursorPosition();

}
